Skill

JavaScript রিভিউ (JavaScript Review for Node.js)

Computer Programming - নোড জেএস (Node.js)
232

Node.js এ কাজ করার জন্য আপনার JavaScript এর ভালো ধারণা থাকা জরুরি, কারণ Node.js পুরোপুরি JavaScript ভিত্তিক একটি রানটাইম পরিবেশ। নিচে JavaScript এর কিছু গুরুত্বপূর্ণ ধারণা এবং বৈশিষ্ট্যগুলো নিয়ে আলোচনা করা হলো, যা Node.js ডেভেলপমেন্টের জন্য অত্যন্ত গুরুত্বপূর্ণ।


১. ভ্যারিয়েবল ডেক্লেয়ারেশন (Variable Declaration)

JavaScript-এ তিনটি মূল পদ্ধতিতে ভ্যারিয়েবল ডেক্লেয়ার করা হয়:

  • var: এটি পুরনো পদ্ধতি এবং ফাংশন স্কোপযুক্ত। তবে বর্তমানে এর ব্যবহার কমে গেছে কারণ এটি কিছু সমস্যা তৈরি করতে পারে।
  • let: এটি ব্লক স্কোপযুক্ত এবং পরবর্তীতে পরিবর্তনযোগ্য। এটি var এর চেয়ে অধিক সুবিধাজনক।
  • const: এটি ব্লক স্কোপযুক্ত এবং একবার ডিক্লেয়ার করার পর আর পরিবর্তন করা যায় না। এটি স্থায়ী মান (constant) ডিফাইন করতে ব্যবহৃত হয়।

উদাহরণ:

let a = 10;      // ব্লক স্কোপ, পরিবর্তনযোগ্য
const b = 20;    // ব্লক স্কোপ, অপরিবর্তনীয়
var c = 30;      // ফাংশন স্কোপ, পরিবর্তনযোগ্য

২. ফাংশন (Functions)

JavaScript এ ফাংশন তৈরি করা বেশ সহজ। ফাংশন ডিক্লেয়ার করা যায় দুইটি প্রধান পদ্ধতিতে:

  • ফাংশন ডিক্লেয়ারেশন:

    function greet() {
      console.log("Hello, World!");
    }
  • ফাংশন এক্সপ্রেশন:

    const greet = function() {
      console.log("Hello, World!");
    };

JavaScript ES6-এ Arrow Functions নামে আরও একটি সুবিধা এসেছে, যা সংক্ষিপ্তভাবে ফাংশন ডিক্লেয়ার করতে সাহায্য করে:

const greet = () => {
  console.log("Hello, World!");
};

৩. অবজেক্ট (Objects)

JavaScript এ অবজেক্ট হলো একটি ডেটা স্ট্রাকচার যা কীগুলি (keys) এবং তাদের সাথে সম্পর্কিত মান (values) ধারণ করে। এটি প্রায়ই key-value pair হিসেবে পরিচিত।

উদাহরণ:

const person = {
  name: 'John',
  age: 30,
  greet: function() {
    console.log("Hello, " + this.name);
  }
};

এখানে, person অবজেক্টের মধ্যে তিনটি প্রপার্টি রয়েছে: name, age, এবং greet


৪. অ্যারে (Arrays)

JavaScript এ অ্যারে একটি একাধিক মান সংরক্ষণ করার জন্য ব্যবহৃত হয়। অ্যারে ইনডেক্স (যেমন ০, ১, ২, ...) ব্যবহার করে মানগুলো অ্যাক্সেস করা হয়।

উদাহরণ:

const fruits = ['apple', 'banana', 'cherry'];

console.log(fruits[0]); // "apple"
fruits.push('grape');    // অ্যারে তে নতুন মান যোগ করা

৫. Promise এবং Asynchronous Programming

JavaScript এ Asynchronous Programming এর জন্য Promise ব্যবহার করা হয়। এটি ব্যবহার করে আপনি এমন কোড লিখতে পারেন যা সিঙ্ক্রোনাস কোডের মতো দেখতে হলেও অ্যাসিনক্রোনাস কাজ করবে।

Promise উদাহরণ:

const myPromise = new Promise((resolve, reject) => {
  let success = true;
  if(success) {
    resolve("Task completed!");
  } else {
    reject("Task failed!");
  }
});

myPromise.then(result => {
  console.log(result);  // "Task completed!"
}).catch(error => {
  console.log(error);   // "Task failed!"
});

৬. Async/Await

ES6 থেকে শুরু করে, JavaScript এ async এবং await ব্যবহার করা যায়, যা অ্যাসিনক্রোনাস কোড লেখাকে আরও সহজ করে তোলে। এটি Promise এর উপর ভিত্তি করে কাজ করে।

উদাহরণ:

const fetchData = async () => {
  try {
    const data = await myPromise;
    console.log(data);
  } catch (error) {
    console.log(error);
  }
};

fetchData();

এখানে await কিওয়ার্ডের মাধ্যমে myPromise এর ফলাফল পাওয়ার জন্য অপেক্ষা করা হয়, এবং async ফাংশনটি অ্যাসিনক্রোনাস রূপে কাজ করে।


৭. ক্লোজার (Closures)

JavaScript এ ক্লোজার হলো এমন একটি ফাংশন যা তার বাইরের ফাংশনের স্কোপে থাকা ভ্যারিয়েবলগুলির অ্যাক্সেস পায়, যদিও বাইরের ফাংশনটি শেষ হয়ে গেছে।

উদাহরণ:

function outer() {
  let count = 0;
  return function inner() {
    count++;
    console.log(count);
  };
}

const counter = outer();
counter(); // 1
counter(); // 2

এখানে, inner ফাংশনটি outer ফাংশনের ভ্যারিয়েবল count এর উপর অ্যাক্সেস পায়, যদিও outer ফাংশনটি একবার এক্সিকিউট হয়ে গেছে।


৮. হাইয়ার-অর্ডার ফাংশন (Higher-order Functions)

JavaScript এ হাইয়ার-অর্ডার ফাংশন এমন একটি ফাংশন যা অন্য একটি ফাংশনকে আর্গুমেন্ট হিসেবে নেয় বা একটি ফাংশন রিটার্ন করে।

উদাহরণ:

function greetPerson(person, greet) {
  console.log(greet(person));
}

greetPerson('Alice', function(name) {
  return 'Hello ' + name;
});

এখানে, greetPerson একটি হাইয়ার-অর্ডার ফাংশন, যা অন্য একটি ফাংশন (greet) আর্গুমেন্ট হিসেবে নেয়।


৯. Modules (ES6 Modules and CommonJS)

JavaScript এ মডিউল ব্যবস্থাপনা বিভিন্ন পদ্ধতিতে করা হয়। Node.js এ প্রধানত CommonJS মডিউল ব্যবহৃত হয়, যেখানে require() এবং module.exports ব্যবহৃত হয়।

উদাহরণ:

CommonJS মডিউল:

// math.js
module.exports = {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b
};

// main.js
const math = require('./math');
console.log(math.add(5, 3)); // 8

ES6 মডিউল ব্যবহারের ক্ষেত্রে import এবং export ব্যবহার করা হয়।

উদাহরণ:

ES6 মডিউল:

// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

// main.js
import { add, subtract } from './math';
console.log(add(5, 3)); // 8

সারাংশ

Node.js-এ কার্যকরীভাবে কাজ করার জন্য JavaScript এর মৌলিক ধারণাগুলি পরিষ্কারভাবে জানা অত্যন্ত গুরুত্বপূর্ণ। এর মধ্যে ভ্যারিয়েবল ডেক্লেয়ারেশন, ফাংশন, অ্যারে, অবজেক্ট, অ্যাসিনক্রোনাস প্রোগ্রামিং, Promise, Async/Await, ক্লোজার, হাইয়ার-অর্ডার ফাংশন, মডিউল ব্যবস্থাপনা ইত্যাদি অন্তর্ভুক্ত। এই সমস্ত ধারণা Node.js ডেভেলপমেন্টে আপনাকে আরো দক্ষ করে তুলবে এবং আপনি আরও কার্যকরী ও উন্নত অ্যাপ্লিকেশন তৈরি করতে পারবেন।

Content added By

JavaScript এর বেসিক সিনট্যাক্স এবং ডেটা টাইপস

237

JavaScript একটি জনপ্রিয় প্রোগ্রামিং ভাষা, যা ওয়েব পেজে ইন্টারঅ্যাকটিভ ফিচার যোগ করতে ব্যবহৃত হয়। এটি সাধারণত ক্লায়েন্ট-সাইড স্ক্রিপ্টিং ভাষা হলেও, Node.js এর মাধ্যমে সার্ভার সাইডেও ব্যবহার করা যায়। নিচে JavaScript এর বেসিক সিনট্যাক্স এবং ডেটা টাইপস আলোচনা করা হলো।


১. JavaScript এর বেসিক সিনট্যাক্স

a. ভেরিয়েবল ডিক্লেয়ারেশন

JavaScript এ ভেরিয়েবল ডিক্লেয়ার করার জন্য তিনটি কীওয়ার্ড রয়েছে: var, let, এবং const

  • var: পুরোনোভাবে ব্যবহৃত হয়, তবে এর স্কোপিং প্রক্রিয়া কিছুটা বিভ্রান্তিকর হতে পারে।
  • let: ব্লক স্কোপিং ভেরিয়েবল ডিক্লেয়ার করার জন্য ব্যবহৃত হয়।
  • const: কনস্ট্যান্ট ভেরিয়েবল ডিক্লেয়ার করার জন্য ব্যবহৃত হয়, যার মান পরবর্তীতে পরিবর্তন করা যায় না।
let x = 10;   // let ব্যবহার করে ভেরিয়েবল ডিক্লেয়ার
const y = 20; // const ব্যবহার করে কনস্ট্যান্ট ভেরিয়েবল ডিক্লেয়ার

b. ডাটা টাইপ্স

JavaScript এ প্রধানত প্রাথমিক ডেটা টাইপ হিসেবে বিভিন্ন ধরনের ভ্যালু থাকতে পারে, যেগুলি পরবর্তীতে কোনো পরিবর্তন বা ক্যালকুলেশনে ব্যবহৃত হয়।

let num = 5;             // Number
let name = "John";       // String
let isActive = true;     // Boolean
let user = null;         // Null
let undef;               // Undefined

c. কন্ট্রোল স্টেটমেন্টস

  • if-else: শর্তসাপেক্ষে কোড চালানোর জন্য ব্যবহৃত হয়।
let age = 18;
if (age >= 18) {
  console.log("You are an adult.");
} else {
  console.log("You are a minor.");
}
  • switch-case: একাধিক শর্ত যাচাই করার জন্য ব্যবহৃত হয়।
let day = 3;
switch (day) {
  case 1:
    console.log("Monday");
    break;
  case 2:
    console.log("Tuesday");
    break;
  case 3:
    console.log("Wednesday");
    break;
  default:
    console.log("Invalid day");
}

d. লুপস

JavaScript এ কয়েক ধরনের লুপ রয়েছে, যেমন for, while, do-while

  • for লুপ:
for (let i = 0; i < 5; i++) {
  console.log(i);
}
  • while লুপ:
let i = 0;
while (i < 5) {
  console.log(i);
  i++;
}

২. JavaScript এর ডেটা টাইপস

JavaScript এ প্রধানত দুটি ধরনের ডেটা টাইপ থাকে: প্রাইমিটিভ (Primitive) এবং **অবজেক্ট (Object)**। নিচে এই ডেটা টাইপগুলোর ব্যাখ্যা দেওয়া হলো।

a. প্রাইমিটিভ ডেটা টাইপস (Primitive Data Types)

  1. Number: সংখ্যার জন্য ব্যবহৃত হয়। এটি পূর্ণসংখ্যা (integer) বা ভগ্নাংশ (floating point) হতে পারে।

    let age = 25;       // Integer
    let price = 19.99;  // Floating-point number
  2. String: স্ট্রিং মানের জন্য ব্যবহৃত হয়। এটি একক অথবা দ্বৈত উদ্ধৃতি চিহ্নের মধ্যে থাকতে পারে।

    let name = "John";
    let message = 'Hello, world!';
  3. Boolean: একটি সত্য (true) অথবা মিথ্যা (false) মান থাকে।

    let isActive = true;
    let isComplete = false;
  4. Null: এটি একটি বিশেষ ডেটা টাইপ যা মানহীন বা অবাস্তব মানের প্রতিনিধিত্ব করে।

    let user = null;
  5. Undefined: যখন কোন ভেরিয়েবলের মান নির্ধারণ করা না হয় তখন এটি undefined হয়ে থাকে।

    let car; // undefined
  6. Symbol: ES6 এ যোগ করা একটি নতুন প্রাইমিটিভ ডেটা টাইপ, যা ইউনিক আইডেন্টিফায়ার তৈরি করে।

    const sym = Symbol("description");

b. অবজেক্ট (Object)

অবজেক্ট হলো এক ধরনের ডেটা টাইপ যা একাধিক মান (প্রপার্টি বা বৈশিষ্ট্য) ধারণ করতে পারে। এটি {} ব্রেসেস দিয়ে ডিফাইন করা হয়।

let person = {
  name: "John",
  age: 30,
  isActive: true
};

এখানে, person একটি অবজেক্ট যা তিনটি প্রপার্টি ধারণ করে: name, age, এবং isActive। অবজেক্টের প্রপার্টি অ্যাক্সেস করতে ডট নোটেশন বা ব্র্যাকেট নোটেশন ব্যবহার করা যায়:

console.log(person.name);      // John
console.log(person['age']);    // 30

c. Array (অবজেক্টের বিশেষ ধরনের)

Array হলো এমন একটি অবজেক্ট যা একাধিক মান (এলিমেন্ট) একটি সিকোয়েন্স আকারে ধারণ করে। এটি [] দিয়ে ডিফাইন করা হয়।

let fruits = ["Apple", "Banana", "Orange"];
console.log(fruits[0]);  // Apple

সারাংশ

  • ভেরিয়েবল ডিক্লেয়ারেশন: JavaScript এ var, let, const দিয়ে ভেরিয়েবল ডিক্লেয়ার করা হয়।
  • ডেটা টাইপস: JavaScript এ প্রাইমিটিভ ডেটা টাইপগুলোর মধ্যে Number, String, Boolean, Null, Undefined, এবং Symbol অন্তর্ভুক্ত রয়েছে, এবং অবজেক্ট ডেটা টাইপের মধ্যে অবজেক্ট ও অ্যারে প্রধান।
  • কন্ট্রোল স্টেটমেন্টস এবং লুপস: শর্ত যাচাই এবং পুনরাবৃত্তি করার জন্য if-else, switch, for, while লুপ ব্যবহৃত হয়।

JavaScript এর বেসিক সিনট্যাক্স এবং ডেটা টাইপ সম্পর্কে এই ধারণাগুলি আপনাকে কোড লেখার শুরুতে সাহায্য করবে।

Content added By

Variables, Functions, এবং Arrays

211

Node.js একটি জাভাস্ক্রিপ্ট রানটাইম, তাই এটি জাভাস্ক্রিপ্টের মৌলিক ধারণা সমর্থন করে যেমন ভেরিয়েবল, ফাংশন এবং অ্যারেগুলি। এখানে আমরা এই তিনটি ধারণা সম্পর্কে আলোচনা করব এবং কিভাবে এগুলি Node.js এ ব্যবহার করা যায় তা দেখব।


১. Variables (ভেরিয়েবল)

ভেরিয়েবল হলো ডেটা সংরক্ষণ করার জন্য একটি নামকৃত স্পেস। জাভাস্ক্রিপ্টে, আপনি তিনটি কীওয়ার্ড ব্যবহার করে ভেরিয়েবল ডিফাইন করতে পারেন: var, let, এবং const

  • var: এটি পুরনো এবং স্কোপে কিছু সীমাবদ্ধতা রয়েছে, তবে আপনি এখনও এটি ব্যবহার করতে পারেন।
  • let: এটি ব্লক স্কোপে কাজ করে, যার মানে এটি শুধুমাত্র {} এর ভিতরে দৃশ্যমান।
  • const: এটি এমন একটি ভেরিয়েবল তৈরি করে যার মান পরিবর্তন করা যায় না।

উদাহরণ:

// var দিয়ে ভেরিয়েবল ডিফাইন করা
var name = 'John';
console.log(name);

// let দিয়ে ভেরিয়েবল ডিফাইন করা
let age = 30;
console.log(age);

// const দিয়ে ভেরিয়েবল ডিফাইন করা
const country = 'Bangladesh';
console.log(country);

Output:

John
30
Bangladesh

২. Functions (ফাংশন)

ফাংশন হলো একটি কোড ব্লক যা নির্দিষ্ট কাজ সম্পন্ন করে এবং পুনরায় ব্যবহার করা যেতে পারে। জাভাস্ক্রিপ্টে ফাংশন ডিফাইন করার দুটি প্রধান উপায় আছে: Function Declaration এবং Function Expression

Function Declaration (ফাংশন ডিক্লেয়ারেশন):

// ফাংশন ডিক্লেয়ারেশন
function greet(name) {
  return 'Hello, ' + name;
}

console.log(greet('Alice'));

Output:

Hello, Alice

Function Expression (ফাংশন এক্সপ্রেশন):

// ফাংশন এক্সপ্রেশন
const greet = function(name) {
  return 'Hello, ' + name;
};

console.log(greet('Bob'));

Output:

Hello, Bob

৩. Arrays (অ্যারেগুলি)

অ্যারেগুলি হলো একাধিক মান সংরক্ষণ করার জন্য ব্যবহার করা একটি ডেটা স্ট্রাকচার। এটি একটি অর্ডার্ড তালিকা, যেখানে প্রতিটি আইটেম ইনডেক্স দ্বারা অ্যাক্সেস করা যায়। জাভাস্ক্রিপ্টে অ্যারে ডিফাইন করতে আপনি [] ব্যবহার করেন।

উদাহরণ:

// একটি অ্যারে ডিফাইন করা
let fruits = ['Apple', 'Banana', 'Orange'];

// অ্যারে থেকে আইটেম অ্যাক্সেস করা
console.log(fruits[0]);  // Apple
console.log(fruits[1]);  // Banana

// অ্যারে Length ব্যবহার করা
console.log(fruits.length);  // 3

// নতুন আইটেম অ্যারে তে যোগ করা
fruits.push('Grapes');
console.log(fruits);  // ['Apple', 'Banana', 'Orange', 'Grapes']

অ্যারে মেথডস:

  • push(): অ্যারের শেষে একটি আইটেম যোগ করা।
  • pop(): অ্যারের শেষ থেকে একটি আইটেম অপসারণ করা।
  • shift(): অ্যারের প্রথম থেকে একটি আইটেম অপসারণ করা।
  • unshift(): অ্যারের শুরুতে একটি আইটেম যোগ করা।
let numbers = [1, 2, 3];

// push() ব্যবহার
numbers.push(4);
console.log(numbers);  // [1, 2, 3, 4]

// pop() ব্যবহার
numbers.pop();
console.log(numbers);  // [1, 2, 3]

সারাংশ

  • ভেরিয়েবল (Variables): ভেরিয়েবল ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়, এবং জাভাস্ক্রিপ্টে var, let, এবং const দ্বারা ডিফাইন করা যায়।
  • ফাংশন (Functions): কোডের একটি ব্লক যা নির্দিষ্ট কাজ সম্পাদন করে এবং একাধিকবার ব্যবহার করা যেতে পারে। এটি ডিক্লেয়ারেশন বা এক্সপ্রেশন দিয়ে ডিফাইন করা হয়।
  • অ্যারেগুলি (Arrays): একাধিক ডেটা সংরক্ষণের জন্য ব্যবহৃত একটি ডেটা স্ট্রাকচার। এটি একাধিক আইটেম ইনডেক্সের মাধ্যমে অ্যাক্সেস এবং পরিচালনা করা যায়।

Node.js এ এই মৌলিক ধারণাগুলোর সাহায্যে আপনি শক্তিশালী এবং কার্যকরী কোড তৈরি করতে পারবেন।

Content added By

Objects এবং JSON এর ব্যবহার

241

Objects এবং JSON (JavaScript Object Notation) জাভাস্ক্রিপ্টে ডাটা সংরক্ষণ এবং ডাটা আদান-প্রদান করার জন্য অত্যন্ত গুরুত্বপূর্ণ দুটি ধারণা। যদিও এই দুটি একে অপরের সাথে সম্পর্কিত, তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। এখানে, আমরা Objects এবং JSON এর মধ্যে সম্পর্ক এবং তাদের ব্যবহার নিয়ে আলোচনা করবো।


১. Objects (অবজেক্টস)

Objects হল JavaScript এর অন্যতম মৌলিক ডাটা টাইপ, যা বিভিন্ন প্রোপার্টি (যেমন কীগুলোর সাথে সম্পর্কিত মান) ধারণ করতে পারে। একটি Object হল key-value পেয়ার থেকে তৈরি, যেখানে key হচ্ছে একটি স্ট্রিং এবং value যেকোনো ধরনের ডাটা হতে পারে, যেমন স্ট্রিং, নাম্বার, অ্যারে, কিংবা অন্য একটি অবজেক্ট।

Object তৈরি করা:

// একটি সহজ Object তৈরি
let person = {
  name: "John",
  age: 30,
  city: "New York"
};

Object থেকে ডাটা এক্সেস করা:

console.log(person.name);  // "John"
console.log(person['age']);  // 30

Object এ নতুন প্রোপার্টি যোগ করা:

person.country = "USA";
console.log(person.country);  // "USA"

Object এর প্রোপার্টি পরিবর্তন করা:

person.age = 31;
console.log(person.age);  // 31

Object এর প্রোপার্টি মুছে ফেলা:

delete person.city;
console.log(person.city);  // undefined

Object ব্যবহার:

  • অবজেক্ট ব্যবহৃত হয় যেকোনো ধরনের ডাটা গোষ্ঠী (যেমন ব্যক্তিগত তথ্য, পণ্য ডেটা, ডাটাবেস রেকর্ড) একত্রিত করতে।
  • একাধিক প্রোপার্টি, যেমন নাম, বয়স, ঠিকানা, ডেটাবেসে সংরক্ষিত তথ্য, একই অবজেক্টে রাখা হয়।
  • অবজেক্ট এক্সেস, পরিবর্তন এবং নতুন প্রোপার্টি যোগ করা সহজ।

২. JSON (JavaScript Object Notation)

JSON হল একটি হালকা ওজনের ডাটা ফরম্যাট যা ডাটা আদান-প্রদান করতে ব্যবহৃত হয়, বিশেষ করে ওয়েব অ্যাপ্লিকেশন ও সার্ভার-সাইড ডেটা এক্সচেঞ্জের জন্য। JSON হল একটি টেক্সট-বেসড ফরম্যাট যা অবজেক্টের মতো দেখালেও, এটি মূলত স্ট্রিং হিসেবে ব্যবহার হয় এবং মানব পাঠযোগ্য।

JSON গঠন:

JSON একটি key-value pair ফরম্যাটে ডাটা সঞ্চয় করে, ঠিক যেমন JavaScript এর Objects। তবে JSON এ শুধুমাত্র স্ট্রিং কিপর্যন্ত কীগুলি এবং মানগুলি স্ট্রিং, নাম্বার, অ্যারে বা অবজেক্ট হতে পারে। JSON এ ফাংশন বা মেথড নেই, এটি শুধুমাত্র ডাটা ধারণ করে।

JSON এর উদাহরণ:

{
  "name": "John",
  "age": 30,
  "city": "New York"
}

JSON এবং JavaScript Object এর মধ্যে পার্থক্য:

  1. JSON হল একটি ডাটা ফরম্যাট যা সাধারণত সার্ভার থেকে ডাটা পাঠানোর জন্য ব্যবহৃত হয়, অন্যদিকে JavaScript Object ডাটা সংরক্ষণ এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
  2. JSON ফরম্যাটটি স্ট্রিং আকারে থাকে, কিন্তু JavaScript Object হচ্ছে একটি বাস্তব অবজেক্ট যা কোডের অংশ হতে পারে।

৩. JSON এবং Objects এর ব্যবহার

JSON ডাটা পার্স করা:

JavaScript এ JSON ডাটা ইন্টারঅ্যাক্ট করতে JSON.parse() এবং JSON.stringify() মেথড দুটি ব্যবহৃত হয়। এই দুটি মেথড JSON এবং JavaScript Object এর মধ্যে রূপান্তর করতে সাহায্য করে।

  1. JSON.parse():
    • JSON স্ট্রিংকে JavaScript Object এ রূপান্তর করে।

      let jsonString = '{"name": "John", "age": 30, "city": "New York"}';
      let obj = JSON.parse(jsonString);
      console.log(obj.name);  // "John"
  2. JSON.stringify():
    • JavaScript Object কে JSON স্ট্রিং এ রূপান্তর করে।

      let person = { name: "John", age: 30, city: "New York" };
      let jsonString = JSON.stringify(person);
      console.log(jsonString);  // '{"name":"John","age":30,"city":"New York"}'

JSON এর ব্যবহার:

  • ডাটা আদান-প্রদান: JSON সাধারণত সার্ভার এবং ক্লায়েন্টের মধ্যে ডাটা পাঠাতে ব্যবহৃত হয়। ওয়েব অ্যাপ্লিকেশন, API, এবং ডিস্ট্রিবিউটেড সিস্টেমে এটি খুবই গুরুত্বপূর্ণ।
  • নেটওয়ার্ক প্রোটোকল: RESTful API এর মাধ্যমে JSON ব্যবহার করে সার্ভার থেকে ডাটা রিসিভ এবং পাঠানো হয়।

Objects এর ব্যবহার:

  • স্টোরিং ডাটা: JavaScript Object এর মাধ্যমে আপনি ডাটা স্টোর করতে পারেন এবং সহজে সেই ডাটা এক্সেস বা ম্যানিপুলেট করতে পারেন।
  • ফাংশনাল প্রোগ্রামিং: Objects জাভাস্ক্রিপ্টে প্রোগ্রামিংয়ের মধ্যে ব্যবহৃত হয় ফাংশনাল বা মেথড ধারণ করতে, যা অ্যাপ্লিকেশনের কার্যকলাপ পরিচালনা করে।

সারাংশ

  • Objects হল JavaScript এর ডাটা স্ট্রাকচার যা key-value পেয়ার ধারণ করে এবং অ্যাপ্লিকেশনের মধ্যে ডাটা ম্যানিপুলেশন সহজ করে।
  • JSON একটি ডাটা ফরম্যাট যা ওয়েব সার্ভিস এবং API এর মাধ্যমে ডাটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়। এটি অবজেক্টের মতো দেখালেও এটি একটি স্ট্রিং হিসেবে ব্যবহার হয় এবং সার্ভার এবং ক্লায়েন্টের মধ্যে ডাটা ট্রান্সফার করতে ব্যবহৃত হয়।
  • JSON এবং Objects একে অপরের সাথে সম্পর্কিত, তবে JSON সাধারণত টেক্সট ফরম্যাটে থাকে এবং JSON.parse() ও JSON.stringify() মেথড দিয়ে Objects এবং JSON এর মধ্যে রূপান্তর করা যায়।
Content added By

JavaScript এর Asynchronous Programming: Callbacks, Promises, এবং Async/Await

251

JavaScript একটি ইভেন্ট-ড্রিভেন এবং অ্যাসিনক্রোনাস প্রোগ্রামিং ভাষা। এর মানে হল যে, JavaScript একাধিক কাজ একসাথে করতে সক্ষম (যেমন ডেটাবেস থেকে তথ্য আনা, ফাইল পড়া, বা API কল করা) এবং এটি **অ্যাসিনক্রোনাস (Asynchronous)**ভাবে কাজ করে, যার মাধ্যমে কোডের অন্যান্য অংশ একে অপরকে ব্লক না করে কার্যকরীভাবে চালানো যায়।

এই অ্যাসিনক্রোনাস কার্যক্রমগুলো সাধারণত তিনটি প্রধান কৌশল দ্বারা পরিচালিত হয়:

  1. Callbacks
  2. Promises
  3. Async/Await

এখানে আমরা প্রতিটি কৌশল সম্পর্কে বিস্তারিতভাবে আলোচনা করব।


১. Callbacks

Callback হল একটি ফাংশন যা অন্য একটি ফাংশনের প্যারামিটার হিসেবে পাস করা হয় এবং মূল ফাংশনটির কার্যক্রম শেষ হওয়ার পর সেটি কল (বা ট্রিগার) করা হয়। JavaScript এ অ্যাসিনক্রোনাস ফাংশনের জন্য callback ব্যবহার করা হয়, যেমন ফাইল পড়া, নেটওয়ার্ক কল করা বা টাইমআউট ব্যবস্থাপনা।

উদাহরণ:

// একটি সিম্পল callback ফাংশন
function fetchData(callback) {
    setTimeout(() => {
        const data = "Data fetched";
        callback(data); // Callback ফাংশন কল করা
    }, 2000);
}

function processData(data) {
    console.log("Processing: " + data);
}

fetchData(processData);  // Callback ফাংশন পাস করা

এখানে fetchData ফাংশনটি একটি ডেটা ফেরত দেয়, এবং যখন সেটি ফেরত আসে, তখন processData callback ফাংশনটি ট্রিগার হয়।

সমস্যা:

Callbacks সাধারণত Callback Hell তৈরি করতে পারে, যেখানে একাধিক কলব্যাক ফাংশন একে অপরের মধ্যে nest হয়ে যায়, এবং কোড আরও জটিল হয়ে যায়।


২. Promises

Promise হল একটি JavaScript অবজেক্ট যা ভবিষ্যতে একটি অ্যাসিনক্রোনাস অপারেশনের ফলাফল বা ত্রুটি উপস্থাপন করে। এটি অ্যাসিনক্রোনাস কাজের জন্য একটি পরিষ্কার এবং পরিচালনাযোগ্য পদ্ধতি প্রদান করে। Promise একটি অবজেক্ট হতে পারে যা fulfilled (সফল), rejected (ব্যর্থ), বা pending (অপেক্ষমাণ) অবস্থায় থাকে।

উদাহরণ:

// Promise ব্যবহার
function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const data = "Data fetched";
            resolve(data);  // Promise সফল হলে
        }, 2000);
    });
}

fetchData().then(data => {
    console.log("Processing: " + data);
}).catch(error => {
    console.log("Error: " + error);
});

এখানে, fetchData একটি Promise ফেরত দেয়। যখন এটি সফলভাবে কাজ সম্পন্ন করে, তখন .then() ব্লকটি কল হয়, এবং যদি কোনো ত্রুটি ঘটে তবে .catch() ব্লকটি কল হয়।

সুবিধা:

  • Callback Hell সমস্যা কমায়।
  • কন্ট্রোল স্ট্রাকচার পরিষ্কার এবং সহজে বুঝতে সুবিধাজনক।
  • একাধিক অ্যাসিনক্রোনাস অপারেশন একসাথে পরিচালনা করতে .all(), .race() ইত্যাদি ব্যবহার করা যায়।

৩. Async/Await

Async/Await হল ES2017 (ES8) তে পরিচিত একটি সিনট্যাক্স যা Promises ব্যবহারের উপর ভিত্তি করে কাজ করে, তবে এটি আরও সরল এবং সিনক্রোনাস কোডের মতো দেখতে হয়। async ফাংশনটি একটি Promise ফেরত দেয় এবং await কিওয়ার্ডটি Promise এর ফলাফল পাওয়ার জন্য অপেক্ষা করে।

উদাহরণ:

// Async/Await ব্যবহার
async function fetchData() {
    const data = await new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("Data fetched");
        }, 2000);
    });
    console.log("Processing: " + data);
}

fetchData();

এখানে, fetchData একটি async ফাংশন, এবং await এর মাধ্যমে Promise এর ফলাফল আসা পর্যন্ত কোড অপেক্ষা করে, যা সিনক্রোনাস কোডের মতো মনে হয়, তবে আসলে এটি অ্যাসিনক্রোনাস।

সুবিধা:

  • কোডটি সহজ এবং পড়তে সহজ।
  • Callback Hell এবং Promise chaining এর থেকে মুক্তি দেয়।
  • কোড আরও পরিষ্কার এবং ডিজাইন করার সময় কমপ্লেক্সিটি কম হয়।

Callbacks, Promises, এবং Async/Await এর তুলনা

বৈশিষ্ট্যCallbacksPromisesAsync/Await
অ্যাসিনক্রোনাস প্রোগ্রামিংহ্যাঁ, তবে callback hell তৈরি হতে পারেহ্যাঁ, তবে chaining এর মাধ্যমে কাজ করা যায়হ্যাঁ, সহজ এবং পরিষ্কারভাবে ব্যবহার করা যায়
প্রবাহ নিয়ন্ত্রণNested, জটিল হতে পারে.then() এবং .catch() এর মাধ্যমে পরিচালিতawait ব্যবহার করে সাধারণ সিনক্রোনাস কোডের মতো পরিচালিত
কোডের জটিলতাজটিল, code structure পরিষ্কার নয়মাঝামাঝি, তবে .then() এবং .catch() এর মাধ্যমে পরিষ্কার হয়পরিষ্কার, সিনক্রোনাস কোডের মতো
ফলাফলসরাসরি ফেরত দেয় নাPromise (fulfilled বা rejected) ফেরত দেয়Promise ফেরত দেয়, তবে await দ্বারা ফলাফল পাওয়া যায়
সহজতাবেশি জটিল এবং অভ্যস্ত হতে পারেতুলনামূলক সহজ, তবে chaining হয়সবচেয়ে সহজ, সিনক্রোনাস কোডের মতো

সারাংশ

  • Callbacks: একটি ফাংশন যা অন্য ফাংশনের শেষে কল করা হয়। তবে এটি Callback Hell তৈরি করতে পারে।
  • Promises: অ্যাসিনক্রোনাস কাজের জন্য একটি পরিষ্কার এবং ব্যবস্থাপনারযোগ্য সমাধান। এটি কন্ট্রোল স্ট্রাকচার পরিষ্কার করে এবং .then(), .catch() ব্যবহার করে ফলাফল বা ত্রুটি পরিচালনা করা যায়।
  • Async/Await: Promises এর ওপর ভিত্তি করে, যা কোড লেখার জন্য একটি সহজ এবং সোজা পদ্ধতি প্রদান করে। এটি সিনক্রোনাস কোডের মতো দেখায়, তবে এটি অ্যাসিনক্রোনাস অপারেশন পরিচালনা করে।

Async/Await সাধারণত সবচেয়ে ভালো পদ্ধতি হিসাবে বিবেচিত হয় কারণ এটি কোড লেখার সময় সর্বাধিক সহজ এবং পরিষ্কার।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...